Raw files
CSV/TXT
load_latest_delimited_file
load_latest_delimited_file(spark=None, source_file=None, env=None, delimiter=",", header=True, infer_schema=True, ...)
Carga el último archivo delimitado compatible dentro de la carpeta indicada.
Ver referencia completa
Está orientada a .csv, .txt y variantes similares leídas de forma nativa con Spark.
| Parámetro | Tipo | Descripción |
| spark | SparkSession | None | Sesión opcional. |
| source_file | str | Ruta relativa dentro de /Volumes/bronze/files/{env}/. |
| env | str | None | Ambiente de lectura. |
| delimiter | str | Separador del archivo. |
| header | bool | Indica si el archivo tiene encabezado. |
| infer_schema | bool | Si Spark debe inferir tipos. |
| encoding | str | Encoding del archivo. |
| quote | str | Carácter quote. |
| escape | str | Carácter escape. |
| multiline | bool | Soporte para registros multilinea. |
| extensions | iterable | None | Extensiones admitidas. |
Retorna: DataFrame de Spark o None si no encuentra archivos.
from gss_bi_udfs import io
df_clientes = io.load_latest_delimited_file(
spark=spark,
source_file="comercial/clientes_vigentes/periodo=2026-03",
delimiter=";",
header=True,
encoding="latin1"
)
Excel
Raw files
load_latest_excel_file
load_latest_excel_file(spark=None, source_file=None, env=None, header=True, sheet_name=0)
Carga el último archivo Excel y lo convierte a DataFrame Spark usando pandas.
Ver referencia completa
Busca el último .xls o .xlsx dentro de la carpeta solicitada.
| Parámetro | Tipo | Descripción |
| spark | SparkSession | None | Sesión opcional. |
| source_file | str | Ruta relativa del dataset. |
| env | str | None | Ambiente de lectura. |
| header | bool | Si la primera fila contiene encabezado. |
| sheet_name | str | int | Hoja a leer por nombre o índice. |
Retorna: DataFrame de Spark o None si no hay archivos.
df_excel = io.load_latest_excel_file(
spark=spark,
source_file="comercial/clientes_vigentes/periodo=2026-03",
header=True,
sheet_name="Hoja1"
)
Dispatcher
Formato único
load_latest_file
load_latest_file(spark=None, source_file=None, env=None, file_format=None, ...)
Elige internamente la estrategia de lectura adecuada según el formato declarado.
Ver referencia completa
Soporta excel, xls, xlsx, csv, txt, tsv y delimited.
| Parámetro | Tipo | Descripción |
| spark | SparkSession | None | Sesión opcional. |
| source_file | str | Ruta relativa del dataset versionado. |
| env | str | None | Ambiente de lectura. |
| file_format | str | Formato del archivo a leer. |
| header | bool | Si el archivo contiene encabezado. |
| delimiter | str | Separador para formatos delimitados. |
| infer_schema | bool | Inferencia de tipos. |
| encoding | str | Encoding del origen. |
| quote | str | Carácter quote. |
| escape | str | Carácter escape. |
| multiline | bool | Soporte para multilinea. |
| sheet_name | str | int | Hoja en caso de Excel. |
Retorna: DataFrame de Spark.
df = io.load_latest_file(
spark=spark,
source_file="comercial/clientes_vigentes/periodo=2026-03",
file_format="delimited",
delimiter="|",
header=False,
infer_schema=False
)
Bronze
Parquet
load_latest_parquet
load_latest_parquet(spark=None, data_base=None, schema=None, table=None, env=None)
Recupera el parquet más reciente de una tabla en bronze y lo devuelve como DataFrame.
Ver referencia completa
Carga el parquet más reciente desde /Volumes/bronze/{db}_{schema}/{env}/{table}/.
| Parámetro | Tipo | Descripción |
| spark | SparkSession | None | Sesión opcional. |
| data_base | str | Nombre de base lógica. |
| schema | str | Nombre de esquema. |
| table | str | Nombre de tabla. |
| env | str | None | Ambiente de lectura. |
Retorna: DataFrame de Spark o None.
df_clientes = io.load_latest_parquet(
spark=spark,
data_base="timepro",
schema="insudb",
table="clientes",
env="dev"
)
Temp views
Retorna diccionario
return_parquets_and_register_temp_views
return_parquets_and_register_temp_views(spark=None, tables_load=None, verbose=False, env=None)
Carga varios parquets, materializa vistas temporales y devuelve los DataFrames en un diccionario.
Ver referencia completa
Permite definir una configuración de tablas y vistas para levantar varias fuentes de una sola vez.
| Parámetro | Tipo | Descripción |
| spark | SparkSession | None | Sesión opcional. |
| tables_load | dict | Mapa de carga por base, esquema, tabla y vista. |
| verbose | bool | Imprime mensajes de estado. |
| env | str | None | Ambiente de lectura. |
Retorna: dict con claves db.schema.table y valores DataFrame.
tables_load = {
"timepro": {
"insudb": [
{"table": "clientes", "view": "vw_clientes"}
]
}
}
dfs = io.return_parquets_and_register_temp_views(
spark=spark,
tables_load=tables_load,
verbose=True
)
Temp views
Sin retorno
parquets_register_temp_views
parquets_register_temp_views(spark=None, tables_load=None, verbose=False, env=None)
Versión orientada solo a materializar vistas temporales desde parquets.
Ver referencia completa
Misma lógica general de carga que la función anterior, pero sin retornar el diccionario.
| Parámetro | Tipo | Descripción |
| spark | SparkSession | None | Sesión opcional. |
| tables_load | dict | Configuración de tablas y vistas. |
| verbose | bool | Mensajes de materialización. |
| env | str | None | Ambiente de lectura. |
Retorna: None.
io.parquets_register_temp_views(
spark=spark,
tables_load=tables_load,
verbose=True
)
Excel
Compatibilidad
load_latest_excel
load_latest_excel(spark=None, source_file=None, env=None)
Función simple de compatibilidad para cargas Excel con encabezado activo.
Ver referencia completa
Internamente delega a load_latest_excel_file y retorna None si falla.
| Parámetro | Tipo | Descripción |
| spark | SparkSession | None | Sesión opcional. |
| source_file | str | Ruta relativa del archivo dentro de bronze/files. |
| env | str | None | Ambiente de lectura. |
Retorna: DataFrame de Spark o None.
df_legacy = io.load_latest_excel(
spark=spark,
source_file="comercial/clientes_vigentes/periodo=2026-03",
env="dev"
)
Excel batch
Retorna diccionario
return_excels_and_register_temp_views
return_excels_and_register_temp_views(spark=None, files_load=None, verbose=False, env=None)
Carga un conjunto de Excels y registra vistas temporales, devolviendo además los DataFrames cargados.
Ver referencia completa
Es útil cuando un proceso trabaja con varios archivos por dominio y subdominio.
| Parámetro | Tipo | Descripción |
| spark | SparkSession | None | Sesión opcional. |
| files_load | dict | Configuración dominio/subdominio/lista de archivos y vistas. |
| verbose | bool | Mensajes de materialización. |
| env | str | None | Ambiente de lectura. |
Retorna: dict con claves dominio.subdominio.archivo y valores DataFrame.
files_load = {
"comercial": {
"clientes": [
{"file": "padron", "view": "vw_padron"}
]
}
}
dfs = io.return_excels_and_register_temp_views(
spark=spark,
files_load=files_load,
verbose=True
)
Excel batch
Solo vistas
excels_register_temp_views
excels_register_temp_views(spark=None, files_load=None, verbose=False, env=None)
Materializa vistas temporales desde múltiples archivos Excel sin devolver estructura adicional.
Ver referencia completa
Es la variante de ejecución más directa cuando solo importa dejar vistas registradas en Spark.
| Parámetro | Tipo | Descripción |
| spark | SparkSession | None | Sesión opcional. |
| files_load | dict | Configuración de archivos y vistas. |
| verbose | bool | Mensajes de materialización. |
| env | str | None | Ambiente de lectura. |
Retorna: None.
io.excels_register_temp_views(
spark=spark,
files_load=files_load,
verbose=True
)
Dispatcher
Acciones
load_and_materialize_views
load_and_materialize_views(action, **kwargs)
Ejecuta una estrategia de carga a partir del nombre de una acción predefinida.
Ver referencia completa
Permite delegar la ejecución a funciones como return_parquets_and_register_temp_views o excels_register_temp_views.
| Parámetro | Tipo | Descripción |
| action | str | Nombre de la acción a ejecutar. |
| kwargs | dict | Argumentos a pasar a la función seleccionada. |
Retorna: dict o resultado de la acción ejecutada; si la acción no existe, retorna un dict vacío.
result = io.load_and_materialize_views(
"return_parquets_and_register_temp_views",
spark=spark,
tables_load=tables_load,
verbose=True
)
Delta
Persistencia base
save_table_to_delta
save_table_to_delta(spark=None, df=None, catalog=None, schema=None, table_name=None, mode="overwrite")
Guarda un DataFrame en Delta usando nombre lógico y path físico resueltos automáticamente.
Ver referencia completa
Usa get_table_info para determinar la ubicación y el nombre completo de la tabla destino.
| Parámetro | Tipo | Descripción |
| spark | SparkSession | None | Sesión activa de Spark. |
| df | DataFrame | DataFrame a persistir. |
| catalog | str | Catálogo destino. |
| schema | str | Esquema destino. |
| table_name | str | Nombre de la tabla destino. |
| mode | str | Modo de escritura Spark, por ejemplo overwrite o append. |
Retorna: None.
io.save_table_to_delta(
spark=spark,
df=df_resultado,
catalog="fi_comunes",
schema="silver",
table_name="dim_cliente",
mode="overwrite"
)
Delta
Reemplazo por rango
save_snapshot_to_delta
save_snapshot_to_delta(spark=None, df=None, catalog=None, schema=None, table_name=None, snapshot_column=None)
Reemplaza el rango existente de un snapshot y luego escribe los nuevos registros en Delta.
Ver referencia completa
Está pensada para tablas fact cargadas por período o time_key, validando el rango presente en el DataFrame origen.
| Parámetro | Tipo | Descripción |
| spark | SparkSession | None | Sesión activa de Spark. |
| df | DataFrame | DataFrame a guardar. |
| catalog | str | Catálogo destino. |
| schema | str | Esquema destino. |
| table_name | str | Tabla destino. |
| snapshot_column | str | Columna que define el período del snapshot. |
Retorna: None.
io.save_snapshot_to_delta(
spark=spark,
df=df_fact,
catalog="fi_comunes",
schema="gold",
table_name="fact_ventas",
snapshot_column="periodo"
)